|
C11 は、2011年時点の最新のC言語の規格。 ISO/IEC 9899:2011〔ISO/IEC 9899:2011 - Information technology - Programming languages - C 〕 の通称。C99の後継。規格は2011年12月8日に承認された。正誤表 の Technical Corrigendum 1 (ISO/IEC 9899:2011/Cor. 1:2012) も発行されている。 C89, C99のように2桁で数字を表す習慣がコンピュータ業界にあり、2000年問題を引き起こしたため、2000年以降のものは、4桁で表現するように改める動きがあり、。 C11 の一部は、GCC 4.6〔GCC 4.6 Release Series — Changes, New Features, and Fixes - GNU Project - Free Software Foundation (FSF) 〕、Clang 3.0〔Clang 3.0 Release Notes 〕 などで実装開始されている。GCC 4.9 にて、glibc にまつわる問題以外は実装が完了している〔C11Status - GCC Wiki 〕。GCC 4.7 や Clang 3.1 では -std=c11 もしくは -std=gnu11 を指定することで利用可能。GCC 5.0 からはデフォルトが gnu11 になる〔GCC 5 Release Series — Changes, New Features, and Fixes - GNU Project - Free Software Foundation (FSF) 〕。==C99からの変更点== C11 は言語仕様とライブラリの仕様の変更を含む。変更点は以下の通り:〔 * アライメント。 _Alignas 指定子, alignof 演算子, aligned_alloc 関数, ヘッダーファイル)* _Noreturn 関数指定子。abort 関数のような戻らない関数を呼び出す関数で使用。* _Generic キーワードを使用した型ジェネリック式。例えば、次のマクロ cbrt(x) は x の型に基づいて、cbrtl(x) , cbrt(x) , cbrtf(x) などに置き換わる。#define cbrt(X) _Generic((X), long double: cbrtl, \ default: cbrt, \ float: cbrtf)(X) * マルチスレッド対応。 _Thread_local ストレージクラス指定子, ヘッダーにスレッド作成・管理関数、mutex、条件変数、スレッドローカルデータ。_Atomic 型修飾子、 でのアトミックアクセス。* C Unicode Technical Report ISO/IEC TR 19769:2004 に基づく、Unicode のサポートの改善。 を追加。char16_t と char32_t を追加。対応する、u と U 文字列プレフィックス。UTF-8文字列プレフィックスの u8 追加。〔* メモリ境界チェック付き関数 (Annex K)。C99 で deprecated になった、 gets 関数の除去。代わりに、境界チェックを行う、gets_s 関数がある。* Analyzability features (Annex L). * 浮動小数点型の特徴を調べるためのマクロの追加。 * 無名構造体と無名 union。構造体や union が入れ子になった場合に便利。例: struct T ; * 静的アサート。 #if や #error よりもあとの、コンパイラが型を理解した後でのアサート。* fopen() での排他的な作成・オープンモードの ( "…x" )。POSIX の O_CREAT | O_EXCL と同じような処理を行う。* exit 関数が失敗した場合の、最低限の終了処理のみを行う quick_exit() 関数。〔WG14 N1327 Abandoning a Process 〕 * 複素数を作成するマクロ。 imaginary が無限もしくはNaNだとreal + imaginary が期待した値を示さない場合があることが理由の一部〔。抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「C11 (C言語)」の詳細全文を読む スポンサード リンク
|